package com.zhz.mall.admin.modules.pms.service;

import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zhz.mall.admin.dto.ProductConditionDTO;
import com.zhz.mall.admin.dto.ProductSaveParamsDTO;
import com.zhz.mall.admin.dto.ProductUpdateInitDTO;
import com.zhz.mall.admin.modules.pms.model.PmsProduct;

import java.util.List;

/**
 * <p>
 * 商品信息 服务类
 * </p>
 *
 * @author zhouhengzhe
 * @since 2023-01-09
 */
public interface PmsProductService extends IService<PmsProduct> {

    /**
     * 条件分页查询商品信息
     *
     * @param condition
     * @return
     */
    Page<PmsProduct> list(ProductConditionDTO condition);

    /**
     * 更新 单个字段的公共方法
     *
     * @param publishStatus
     * @param ids
     * @param getPublishStatus
     * @return
     */
    boolean updateStatus(Integer publishStatus, List<Long> ids, SFunction<PmsProduct, ?> getPublishStatus);

    /**
     * 商品添加
     *
     * @param productSaveParamsDTO
     * @return
     */
    boolean create(ProductSaveParamsDTO productSaveParamsDTO);

    /**
     * 获取编辑状态下商品信息
     *
     * @param id
     * @return
     */
    ProductUpdateInitDTO getUpdateInfo(Long id);

    /**
     * 商品修改—保存
     *
     * @param productSaveParamsDTO
     * @return
     */
    boolean update(ProductSaveParamsDTO productSaveParamsDTO);

}
